enum HttpMethod { GET, POST, DELETE }

///基础请求
abstract class HBaseRequest {
  // curl -X GET "http://api.devio.org/uapi/test/test?requestPrams=11" -H "accept: */*"
  // curl -X GET "https://api.devio.org/uapi/test/test/1
  var pathParams;
  var useHttps = true;

  String authority() {
    return "www.fastmock.site"; //域名
    // return 'api.devio.org'; //这是用的视频里面的接口 暂时能用不知道什么时候就不能用了
  }

  HttpMethod httpMethod();

  String path();
  // 完整的url
  String url() {
    Uri uri;
    var pathStr = path();
    //拼接path参数 ---由于我这里是自己mock的数据 所以用不到拼接数据了
    // if (pathParams != null) {
    //   if (path().endsWith("/")) {
    //     pathStr = "${path()}$pathParams";
    //   } else {
    //     pathStr = "${path()}/$pathParams";
    //   }
    // }
    //http和https切换
    if (useHttps) {
      uri = Uri.https(authority(), pathStr, params);
    } else {
      uri = Uri.http(authority(), pathStr, params);
    }
    return uri.toString();
  }

  bool needLogin();

  Map<String, String> params = Map();

  ///添加参数 .add这种添加参数
  HBaseRequest add(String k, Object v) {
    params[k] = v.toString();
    return this;
  }

  // Map<String, dynamic> header = Map();
  Map<String, dynamic> header = {};

  ///添加header
  HBaseRequest addHeader(String k, Object v) {
    header[k] = v.toString();
    return this;
  }
}
